package cn.tedu.csmall.passport.mapper;

import cn.tedu.csmall.passport.pojo.entity.Admin;
import cn.tedu.csmall.passport.pojo.vo.AdminListItemVO;
import cn.tedu.csmall.passport.pojo.vo.AdminStandardVO;
import cn.tedu.csmall.passport.pojo.vo.AdminLoginInfoVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * AdminMapper接口
 *
 * @author 刘伟涛
 * @version 1.0.0
 */
@Repository
public interface AdminMapper {

    /**
     * 添加管理员
     *
     * @param admin admin数据
     * @return 受影响行数
     */
    int insert(Admin admin);

    /**
     * 根据id删除管理员
     *
     * @param id 管理员id
     * @return 受影响行数
     */
    int deleteById(Long id);

    /**
     * 根据管理员id修改数据
     *
     * @param admin 管理员数据
     * @return 受影响行数
     */
    int updateById(Admin admin);

    /**
     * 根据用户名查找数据
     *
     * @param username 用户名
     * @return 管理员数据
     */
    AdminLoginInfoVO getLoginInfoByUsername(String username);

    /**
     * 根据id查找管理员数据
     *
     * @param id 管理员id
     * @return 管理员数据
     */
    AdminStandardVO getStandardById(Long id);

    /**
     * 根据id查表个数
     *
     * @param id 管理员id
     * @return 结果总数
     */
    int countById(Long id);

    /**
     * 根据用户名查表个数
     *
     * @param username 用户名
     * @return 结果总数
     */
    int countByUsername(String username);

    /**
     * 根据用户名查表个数
     *
     * @param phone 手机号
     * @return 结果总数
     */
    int countByPhone(String phone);

    /**
     * 根据用户名查表个数
     *
     * @param email 电子邮箱
     * @return 结果总数
     */
    int countByEmail(String email);

    /**
     * 查询管理员列表
     *
     * @return 管理员列表数据
     */
    List<AdminListItemVO> list();
}
